Monitoring and using telemetry data

ABSTRACT

Aspects of the disclosure relate to monitoring and using telemetry information in various ways. For example, a system that monitors telemetry information may include a user that gathers telemetry information of a device and transmits the information to a monitored room. A manager may join a monitored room and monitor the monitored room for particular types of telemetry information. In one example, a manager may determine whether a downstream device is experiencing a network problem, such as a low bitrate. A manager may also transmit commands to the player via the monitored room, which causes the downstream device to operate in accordance with the transmitted command. In one example, a manager may transmit a command that causes a player to decode a particular service.

BACKGROUND

Network-enabled devices may be deployed in numerous premises throughoutinformation distribution networks that serve numerous end-points over awide region, such as households and/or businesses. Content providersdistribute or provide access to content, services, and other informationto the end-points via the information distribution network. A cost indelivering the content, services and other information to the end-pointsincludes the cost associated with determining and/or identifyingproblems occurring throughout the distribution network. For example, auser may interact (e.g., telephone call, e-mail, web chat session, etc.)with a representative of the content provider when the user experiencesa problem. The representative may proceed to discuss the problem withthe user to determine if a problem exists, identify the existingproblem, determine a potential solution to the problem, and initiate apotential fix. One difficulty is that the problem observed by the usermay be the result of an issue occurring at any point throughout thenetwork. Thus, there exists a need for an improved system and method tomonitor and diagnose a network.

SUMMARY

Some aspects of the disclosure relate to methods and systems forefficiently monitoring telemetry data, gathering more informativetelemetry data and/or more effectively using telemetry data.

One or more aspects described herein may relate to various functions andprocesses related to monitoring telemetry information and using themonitored telemetry information. For example, a method of monitoring andusing telemetry information may include joining a manager to a monitoredroom. The monitored room may be configured to transmit information amongmembers or users of the monitored room using, for example, a messagingprotocol that conforms or is similar to an instant messaging protocol, achat messaging protocol, and/or a real-time text-based messagingprotocol. The method may include receiving at the manager, via themonitored room, telemetry information related to a downstream device ofthe distribution network in a message using the messaging protocol. Themanager may be configured to monitor for telemetry information of afirst type. The method may include determining, by the manager, that thereceived telemetry information includes information of the first type.Additionally, the method may include extracting, by the manager,telemetry information from the received telemetry information. Theextracted telemetry information may include information of the firsttype.

One or more aspects described herein may also relate to variousfunctions and processes related to sharing and/or using the telemetrydata in and throughout various components of a distribution or accessnetwork. For example, various managers may monitor the telemetry data toidentify telemetry information relevant to the specific manager. In oneexample, a video service manager may monitor the telemetry informationto determine whether the video services are operating correctly tovarious end-point devices. In other examples, managers may be configuredto monitor telemetry information to identify information relevant tooperational, business and/or engineering needs. In one instance, anadvertisement manager may be configured to monitor the telemetry data inorder to identify information related to advertising, such as adinsertion, ad playback, user interaction with an advertisement, etc. Inanother example, an engineering manager may be configured to monitor thetelemetry data to determine large-scale network issues affectingmultiple end-point devices, such as wide-spread low bit rates, packetloss, network congestion, etc.

The preceding presents a simplified summary in order to provide a basicunderstanding of some aspects of the disclosure. The summary is not anextensive overview of the disclosure. It is neither intended to identifykey or critical elements of the disclosure nor to delineate the scope ofthe disclosure. The summary merely presents some concepts of thedisclosure in a simplified form as a prelude to the description below.Further details of above and/or additional features will be described inthe sections that follow.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure is illustrated by way of example and not limitedin the accompanying figures in which like reference numerals indicatesimilar elements and in which:

FIG. 1 illustrates an example information distribution network.

FIG. 2 illustrates an example hardware platform on which at least someof the various elements described herein can be implemented.

FIG. 3 illustrates an example system for monitoring telemetryinformation and using the telemetry information according to one or moreaspects described herein.

FIG. 4A illustrates an example structure of a telemetry informationmessage according to one or more aspects described herein.

FIG. 4B illustrates an example chat room display for a monitored roomthat includes different telemetry information messages according to oneor more aspects described herein.

FIG. 5 illustrates an example structure of a command according to one ormore aspects described herein.

FIG. 6A illustrates an example method for monitoring and transmittingtelemetry information at a downstream device according to one or moreaspects described herein.

FIG. 6B illustrates an example method for processing a command at adownstream device according to one or more aspects described herein.

FIG. 7A illustrates an example method for processing telemetryinformation at a manager according to one or more aspects describedherein.

FIG. 7B illustrates an example method for issuing one or more telemetryinformation commands from a manager to a downstream device according toone or more aspects described herein.

FIG. 8 illustrates an example method for causing a downstream to switchbetween the one-way and two-way modes of operation according to one ormore aspects described herein.

FIG. 9A illustrates an example method for receiving telemetryinformation at a monitored room according to one or more aspectsdescribed herein.

FIG. 9B illustrates an example method for joining a player or managerinto a monitored room according to one or more aspects described herein.

FIG. 10 illustrates an example hierarchical system for monitoringtelemetry information and using the telemetry information according toone or more aspects described herein.

FIG. 11 illustrates an example method for hierarchically processingtelemetry information according to one or more aspects described herein.

FIG. 12 illustrates an example system for monitoring telemetryinformation and using the telemetry information via a plurality ofmanagers according to one or more aspects described herein.

DETAILED DESCRIPTION

In the following description of various illustrative embodiments,reference is made to the accompanying drawings, which form a parthereof, and in which is shown, by way of illustration, variousembodiments in which aspects of the disclosure may be practiced. It isto be understood that other embodiments may be utilized, and structuraland functional modifications may be made, without departing from thescope of the present disclosure.

FIG. 1 illustrates an example information distribution network 100 onwhich many of the various features described herein may be implemented.Network 100 may be any type of information distribution network, such assatellite, telephone, cellular, wireless, optical fiber network, coaxialcable network, and/or a hybrid fiber/coax distribution network. Suchnetworks 100 may use a series of interconnected communication lines 101(e.g., coaxial cables, optical fibers, wireless, etc.) to connect anend-point to a central office or headend 103. Example end-points areillustrated in FIG. 1 as premises 102 (e.g., businesses, homes, consumerdwellings, etc.) The central office 103 may transmit downstreaminformation signals onto the lines 101, and each home 102 may have areceiver used to receive and process those signals.

There may be one line 101 originating from the central office 103, andit may be split a number of times to distribute the signal to varioushomes 102 in the vicinity (which may be many miles) of the centraloffice 103. The lines 101 may include components not illustrated, suchas splitters, filters, amplifiers, etc. to help convey the signalclearly, but in general each split introduces a bit of signaldegradation. Portions of the lines 101 may also be implemented withfiber-optic cable, while other portions may be implemented with coaxialcable, other lines, or wireless communication paths. By running fiberoptic cable along some portions, for example, signal degradation inthose portions may be significantly minimized, allowing a single centraloffice 103 to reach even farther with its network of lines 101 thanbefore.

The central office 103 may include a termination system (TS) 104, suchas a cable modem termination system (CMTS), which may be a computingdevice configured to manage communications between devices on thenetwork of lines 101 and backend devices such as servers 105-107 (to bediscussed further below). The TS may be as specified in a standard, suchas the Data Over Cable Service Interface Specification (DOCSIS)standard, published by Cable Television Laboratories, Inc. (a.k.a.CableLabs), or it may be a similar or modified device instead. The TSmay be configured to place data on one or more downstream frequencies tobe received by modems at the various homes 102, and to receive upstreamcommunications from those modems on one or more upstream frequencies.The central office 103 may also include one or more network interfaces108, which can permit the central office 103 to communicate with variousother external networks 109. These networks 109 may include, forexample, networks of Internet devices, telephone networks, cellulartelephone networks, fiber optic networks, local wireless networks (e.g.,WiMAX), satellite networks, and any other desired network, and theinterface 108 may include the corresponding circuitry needed tocommunicate on the network 109, and to other devices on the network suchas a cellular telephone network and its corresponding cell phones.

As noted above, the central office 103 may include a variety of servers105-107 that may be configured to perform various functions. Forexample, the central office 103 may include a push notification server105. The push notification server 105 may generate push notifications todeliver data and/or commands to the various homes 102 in the network (ormore specifically, to the devices in the homes 102 that are configuredto detect such notifications). The central office 103 may also include acontent server 106. The content server 106 may be one or more computingdevices that are configured to provide content to users in the homes.This content may be, for example, video on demand movies, televisionprograms, songs, text listings, etc. The content server 106 may includesoftware to validate user identities and entitlements, locate andretrieve requested content, encrypt the content, and initiate delivery(e.g., streaming) of the content to the requesting user and/or device.

The central office 103 may also include one or more application servers107. An application server 107 may be a computing device configured tooffer any desired service, and may run various languages and operatingsystems (e.g., servlets and JSP pages running on Tomcat/MySQL, OSX, BSD,Ubuntu, Redhat, HTML5, JavaScript, AJAX and COMET). For example, anapplication server may be responsible for collecting television programlistings information and generating a data download for electronicprogram guide listings. Another application server may be responsiblefor monitoring user viewing habits and collecting that information foruse in selecting advertisements. Another application server may beresponsible for formatting and inserting advertisements in a videostream being transmitted to the homes 102.

An example home 102 a may include a modem 110, which may includetransmitters and receivers used to communicate on the lines 101 and withthe central office 103. The modem 110 may be, for example, a coaxialcable modem (for coaxial cable lines 101), a fiber interface node (forfiber optic lines 101), or any other desired modem or similarlyfunctioning device. The modem 110 may be connected to, or be a part of,a gateway interface device 111. The gateway interface device 111 may bea computing device that communicates with the modem 110 to allow one ormore other devices in the home to communicate with the central office103 and other devices beyond the central office. The gateway 111 may bea set-top box (STB), digital video recorder (DVR), computer server, orany other desired computing device. The gateway 111 may also include(not shown) local network interfaces to provide communication signals todevices in the home, such as televisions 112, additional STBs 113,personal computers 114, laptop computers 115, wireless devices 116(wireless laptops and netbooks, mobile phones, mobile televisions,personal digital assistants (PDA), etc.), and any other desired devices.Examples of the local network interfaces include Multimedia Over CoaxAlliance (MoCA) interfaces, Ethernet interfaces, universal serial bus(USB) interfaces, wireless interfaces (e.g., IEEE 802.11), Bluetoothinterfaces, and others.

FIG. 2 illustrates an example hardware platform on which at least someof the various elements described herein can be implemented. Thecomputing device 200 may include one or more processors 201, which mayexecute instructions of a computer program to perform any of thefeatures described herein. The instructions may be stored in any type ofcomputer-readable medium or memory, to configure the operation of theprocessor 201. For example, instructions may be stored in a read-onlymemory (ROM) 202, random access memory (RAM) 203, removable media 204,such as a Universal Serial Bus (USB) drive, compact disk (CD) or digitalversatile disk (DVD), floppy disk drive, or any other desired electronicstorage medium. Instructions may also be stored in an attached (orinternal) hard drive 205. The computing device 200 may include one ormore output devices, such as a display 206 (or an external television),and may include one or more output device controllers 207, such as avideo processor. There may also be one or more user input devices 208,such as a remote control, keyboard, mouse, touch screen, microphone,etc. The computing device 200 may also include one or more networkinterfaces, such as input/output circuits 209 (such as a network card)to communicate with an external network 210. The network interface maybe a wired interface, wireless interface, or a combination of the two.In some embodiments, the interface 209 may include a modem (e.g., acable modem), and network 210 may include the communication lines of thenetworks illustrated in FIG. 1, or any other desired network.

The FIG. 2 example is an illustrative hardware configuration.Modifications may be made to add, remove, combine, divide, etc.components as desired. Additionally, the components illustrated may beimplemented using basic computing devices and components, and the samecomponents (e.g., processor 201, storage 202, user interface, etc.) maybe used to implement any of the other computing devices and componentsdescribed herein.

One or more aspects of the disclosure may be embodied in acomputer-usable data and/or computer-executable instructions, such as inone or more program modules, executed by one or more computers or otherdevices. Generally, program modules include routines, programs, objects,components, data structures, etc. that perform particular tasks orimplement particular abstract data types when executed by a processor ina computer or other data processing device. The computer executableinstructions may be stored on one or more computer readable media suchas a hard disk, optical disk, removable storage media, solid statememory, RAM, etc. The functionality of the program modules may becombined or distributed as desired in various embodiments. In addition,the functionality may be embodied in whole or in part in firmware orhardware equivalents such as integrated circuits, field programmablegate arrays (FPGA), and the like. Particular data structures may be usedto more effectively implement one or more aspects of the invention, andsuch data structures are contemplated within the scope of computerexecutable instructions and computer-usable data described herein.

Various features described herein relate to monitoring and usingtelemetry information. With respect to FIG. 1, such monitoring and usingmay include communications between one or more downstream devices (e.g.,devices of one or more of premises 102, MTS 104) and one or more serversof the central office 103 (e.g., application server 107). For example,messages that include telemetry information may be transmitted from adevice of premise 102 a (e.g., gateway 111) to a server of the centraloffice 103 configured to manage the telemetry information, so that thetelemetry information for the premise 102 a can be monitored at thecentral office 103. In some embodiments, the telemetry information canbe monitored, analyzed, and/or used to determine information related tooperation and use of the distribution network.

Telemetry information generally refers to information that is related tovarious conditions of a distribution network. For example, telemetryinformation may refer to status information of a particular device, suchas a gateway device. Status information of a particular device mayinclude bit rates (e.g., the bit rate of information received at thegateway device), address information (e.g., an Internet Protocol addressof the gateway device), status of one or more services operating on thedevice (e.g., status of a video-on-demand service currently operating onthe gateway device), etc. As another example, telemetry information mayrefer to operating conditions of the distribution network, such asbit-rates, network congestion, packet loss, etc. Details of telemetryinformation, including details of the above mentioned telemetryinformation, and others, will be discussed below.

FIG. 3 illustrates an example system for monitoring telemetryinformation and using the telemetry information. In some embodiments,the example system may be used to monitor and/or use the telemetry inreal time.

As illustrated in FIG. 3, the example system includes a managementserver 301 (e.g., application server 107 of FIG. 1), a distributionnetwork 310 (e.g., distribution network 100 of FIG. 1), other network320 (e.g., the Internet, a third party network, etc.), and a pluralityof downstream devices 307-a, 307-b, 307-n, etc. (e.g., gateway 111, STB113, television 112, personal computer 114, laptop computer 115,wireless device 116 of FIG. 1, etc.). In some arrangements, themanagement server 301 may include one or more managers (e.g., manager303) and/or one or more monitored rooms (e.g., monitored room 305).Downstream devices may include one or more players (e.g., players 309-a,309-b, 309-n, etc.). The players, managers and devices of the examplesystem may communicate with other devices, players and managers of theexample system. Additionally, particular devices of the distributionnetwork may be capable of transmitting signals to one or more of thedownstream devices, such as router 315.

In some embodiments, a manager may be a software application executingon a server (e.g., manager 303 executes on management server 301). Insome embodiments, managers may be configured to transmit commands to oneor more of players/downstream devices via a monitored room. Additionallyand/or alternatively, managers may also be configured to monitortelemetry information and use the telemetry information in various ways.For example, a manager can be configured to monitor telemetryinformation in order to determine and/or identify information that isrelevant to the manager. In one example, a video service manager maymonitor the telemetry information to determine whether video servicesare operating correctly to various end-point devices.

Video services can operate incorrectly when a network problem (e.g., aservice problem) is occurring in the distribution network. A networkproblem can be the result of an issue occurring at any point throughoutthe distribution network. For example, in some embodiments, a contentprovider may transmit content and/or services using many different datastreams. These data streams may be multiplexed together using one ormore frequency bands. In some instances, particular frequency bands maybe reserved for particular services (e.g., frequency band X is reservedfor data streams of premium television programming, such as HBO®, HBO®2,etc., while frequency band Y is reserved for data streams of avideo-on-demand service or an electronic program guide service, whilefrequency band Z is reserved for a linear content service, etc.). Adownstream device may receive the data streams and decode one or moreparticular data streams from the received streams. Content carried onone of the particular data streams may be viewed on a display device,such as a television or the like. These data streams, however, passthrough many different devices and/or transmission media before itreaches the downstream device and/or the display device. If the devicesand/or transmission media are performing improperly and/or unexpectedly,or certain network events are occurring (e.g., network congestion, highusage of communication lines, etc.), a user could be experiencingproblems viewing and/or interacting with a service (e.g., packet loss,low bitrates, service outages, reduced quality of received contentfragments, buffering events, etc.).

For example, an improperly or unexpectedly performing device may nottransmit or process service information properly, or may modify theservice information causing the information to be improperly received atthe user device. In another example, a downstream device may beexperiencing reduced quality of received content fragments. Thedownstream device may detect the reduced quality of the fragments andrespond by lowering its bitrate. A downstream device shifting from ahigher bitrate to a lower bitrate can be used to identify a networkproblem, such as a variation in fragment quality level which caused thedevice to shift to the lower bitrate. In yet another example, thedownstream device could be experiencing a buffering event. Somebuffering events can cause playback of the content to stall, orotherwise playback improperly. Information related to the device'sbuffer and/or buffer events detected by the device could be used toidentify a network problem, such as a buffer event that caused playbackof the content to stall.

The location of the improperly performing device and/or transmissionmedia in the distribution network can be a factor in the impact on theuser base of the content provider's services. For example, networkproblems may be specific to a downstream device or a user (e.g., aproblem specific to a single user device), a particular geographic areasuch as a neighborhood or metro area (e.g., a problem with a MTS,encoder, fragmenter, server, router, or other device of the distributionnetwork), etc. Indeed, a network problem may be the result of adefective device upstream of the user device, downstream from thecentral office, at the central office, and/or at the premise of the userdevice. For example, router 315 may be malfunctioning and causing thedownstream devices to experience a network problem. Some of the networkproblems that can be identified by a video service manager include a lowbit rate, packet loss, etc. Upon identifying a network problem, thevideo service manager may notify the content provider of the identifiedproblem, such as by transmitting information identifying the problem toa database of the content provider (e.g., a report that includesinformation related to the identified problem).

In other examples, managers may be configured to monitor telemetryinformation to identify information relevant to operational, businessand/or engineering needs. In one instance, an advertisement manager maybe configured to monitor the telemetry data in order to identifyinformation related to advertising, such as ad insertion, ad playback,user interaction with an advertisement, etc. In another example, anengineering manager may be configured to monitor the telemetry data todetermine large-scale network issues affecting multiple end-pointdevices, such as wide-spread low bit rates, packet loss, networkcongestion, etc. Details of these managers, and others, will bediscussed below. Generally, a manager can be configured to monitor anycombination of telemetry information. Some other examples includemanagers configured to monitor for router/network topology events,distribution network health information, unexpected error events,encoder issues, issues with content flowing into the encoders, issueswith fragmenters, issues with the multi-bitrate content received by thefragmenters from the encoders, etc.

The managers may also be configured to issue commands related to thetype of telemetry information each manager monitors. For example, avideo service manager may issue commands to help in detecting and/ordiagnosing video service network problems (e.g., issue commands tochange bitrates, play certain content, etc.). As another example, anadvertisement manager may issue commands related to advertisements, suchas a command causing a device to play a certain advertisement. As yetanother example, an engineering manager may issue commands to assist indetecting and/or diagnosing large-scale network issues, or the like.

One source of the telemetry information for a manager can be a monitoredroom, such as a chat room. A monitored room may be a softwareapplication executing on the management server 301 (e.g., monitored room305 is executing on management server 301). Monitored rooms, along withthe managers, may provide a scalable signaling and telemetry informationgathering mechanism that is between downstream devices and existingtools of a content provider's central office (e.g., customer servicetools, engineering tools, other organization tools, etc.) For example,these monitored rooms/chat rooms can allow for any number of managers tomonitor information posted in the rooms from any number of playersand/or managers. Any manager can extract information from a monitoredroom. Upon extracting information from a room, the manager may performadditional analysis and/or processing on the extracted information, suchas summarizing the information and creating another message. Theseadditional messages could be posted to other monitored rooms, or sent toother systems of the content provider.

Another source of telemetry information could be information receivedfrom other monitoring tools utilized by the content provider. Forexample, monitoring tools could include tools that monitor for servicedegradation and outages for video-on-demand services, linear services,other data services, web servers, etc. Various different monitoringsystems can be used including iVMS®, Nagios®, etc. Information producedby the monitoring tools can be converted into messages compatible withthe monitored rooms (e.g., into an XMPP message) and transmitted to themonitored room.

In some illustrative embodiments, a monitored room can receive telemetryinformation from members of the monitored room. In some arrangements, amonitored room may be configured to receive and process requests to jointhe monitored room. The requests to join may be transmitted fromplayers, managers, downstream devices, servers, etc. While joined,members (e.g., player and/or managers) may post information to themonitored room and/or extract information from the room. For example, aplayer of a downstream device may transmit telemetry information to themonitored room and a manager may monitor the room for relevant telemetryinformation and extract the relevant information for further processing.In some embodiments, a manager may be monitoring the telemetryinformation of a plurality of monitored rooms (e.g., manager 303 maymonitor the telemetry information of monitored room 305 and at least oneadditional monitored room). At a given instance, a monitored room mayhave a plurality of members, including one or more managers and one ormore players. Additionally, a monitored room may be associated with auser interface that allows an operator of the content provider to viewthe messages transmitted to the monitored room (e.g., telemetryinformation messages, commands, etc.). In some arrangements, the userinterface may operate on the management server that includes themonitored room (e.g., management server 301 of FIG. 3).

In some arrangements, monitored rooms may be organized such that amonitored room is for a particular purpose (e.g., a particular networkproblem, such as a video service problem). The management server(s) maystore information identifying the currently available monitored roomsand/or the particular purposes of the monitored rooms. The storedinformation may be transmitted to the downstream devices.

Telemetry information may be transmitted to a monitored room by one ormore players (e.g., player 309-a, 309-b, 309-n, etc., of FIG. 3). Aplayer may be a software application executing on a downstream device(e.g., player 309-a may be executing on downstream device 307-a, whichmay be a gateway interface device). For example, a player may be a mediaor video player of the downstream device, or some other softwareapplication and/or process operating on the downstream device (e.g., ascreen-saver application, a chat messaging application, etc.). A playermay be configured to transmit requests to join monitored rooms, gathertelemetry information at the downstream device, and/or transmit thegathered telemetry information to one or more monitored rooms.Additionally, in some arrangements, the player may perform its variousfunctions without knowledge of the user. For example, no messagesrelated to the functions of the player are displayed to a user. Instead,the joining of monitored rooms, the gathering and transmitting oftelemetry information, etc. may be performed automatically, such as inthe background of the downstream device's operating system.

In some embodiments, a player may be configured to operate according toa plurality of different modes of operation. For example, a player maybe configured to operate in a two-way mode that enables the processingof commands received from a manager via a monitored room. Commands maycause the downstream device to perform specific actions, such as decodea specific service, process the service, pause, report status,automatically modify trace settings, and/or transmit telemetryinformation, etc. In some arrangements, when operating in the two-waymode, a player may request to join monitored rooms, gather and transmittelemetry information, process commands, etc. As another example, aplayer may be configured to operate in a one-way mode that disables theprocessing of commands received from a manager via a monitored room. Insome arrangements, when operating in the one-way mode, a player mayrequest to join monitored rooms, gather and transmit telemetryinformation, etc. In some embodiments, when operating in the one-waymode, a player may be able to process only particular commands, such asa mode change request. In some instances, the particular commands thatthe downstream device can process while operating in the one way mode ofoperation may be received directly from a manager and/or bypass themonitored rooms. Details of the different modes and the commands will bediscussed below.

The managers, players and monitored rooms may communicate with eachother. In some embodiments, the managers, player and rooms maycommunicate with each other using a messaging protocol, such as aprotocol used in an chat messaging service, instant messaging service,voice over Internet Protocol service, real-time text-based communicationservices, and/or file transfer signaling. Additionally and/oralternatively, in some arrangements, the managers, players and rooms maycommunicate with each other using Internet protocol (IP) based messagingtechnologies.

Some messaging protocols and/or technologies may allow for thecollection of information (e.g., telemetry information) by a system of acontent provider's central office. The gathered information could comefrom user devices, or other devices of the distribution network, such asrouter information and other distribution network information. Thissystem may be able to analyze and/or correlate the gathered information,determine whether network problems exist within the distribution network(e.g., a root cause of the problem and/or a scope of the problem), andreact to the determination that a network problem exists. In somearrangements, the system could attempt to proactively notify othersystems of the content provider and/or the downstream devices of thenetwork problem.

In one or more illustrative embodiments, the managers, players, androoms may communicate using Extensible Messaging and Presence Protocol(XMPP). XMPP is based on Extensible Markup Language (XML), and uses adecentralized client-server model that allows the clients (e.g., theplayers and managers) to communicate with each other via an XMPP server(e.g., management server 301 of FIG. 3). In some instances the managersand players and rooms may utilize a modified version of XMPP (e.g., viaan XMPP extension) to provide custom functionality to gather, monitorand/or use the telemetry information. In one example, the managers andplayers and rooms of the system use an extended version of XMPP thatdefines additional actions (e.g., messages, commands, etc.) and syntaxfor the actions that can be commonly understood by the managers andplayers and rooms. The Jabber protocol, which is related to XMPP, isanother example of a protocol that can be used by the managers, playersand rooms to communicate. Message oriented middleware (MOM) or similartechnologies are other examples that can be used by the managers,players and rooms to communicate.

In some embodiments utilizing XMPP for messaging, a monitored room mayperform functions similar to an XMPP server. In one such embodiment, amonitored room receives XMPP messages (or messages of an extendedversion of XMPP, etc.) from managers and players that have joined theroom. The monitored room may forward the messages to the other managersand players to simulate a chat room, which allows the joined managersand players to “see” and process the messages sent to the monitored room(e.g., via a user interface). The messages can include both commands andtelemetry information messages.

In some illustrative embodiments utilizing XMPP, manager or player mayhave its own unique identifier (e.g., Jabber ID). In one or morearrangements, the unique identifier may be structured similar to ane-mail address. For example, the unique identifier may include ausername (e.g., “client-player307-a”) and a domain name, such as ageographical domain (e.g., zip code, city name, state name, etc.) and/ora downstream device address (e.g., a device's IP address, and/or otherdevice identifier, such as an MTS identifier). In some arrangements, theusername and domain name may be separated by one or more symbols, suchas an “@” symbol. In one example, an XMPP unique identifier for aparticular downstream device/player (e.g., player 309-a of FIG. 3) maybe a “client-player309-a@1.1.100.101” character string. Otheridentifiers can be used. For example, the unique identifier may includea name (e.g., “jvd-mac-home”, “bf-laptop”, etc.) and/or a portion of theXMPP unique identifier (e.g., “a05ce8b0” where the unique identifier is“a05ce8b0@nh”, “45c9aa4b” where the unique identifier is “45c9aa4b@nh”,etc.).

FIG. 4A illustrates an example structure of a telemetry informationmessage. Generally, telemetry information messages include the telemetryinformation gathered at the downstream device. As will be discussed inmore detail below, these messages may be monitored and/or used by themanagers. In some arrangements, a telemetry information message may bean XMPP-like message sent from a player to a monitored room. Asillustrated in FIG. 4, a telemetry information message may include amessage header portion 401 and one or more values (e.g., value 1 403,value 2 405, value 3 407, value N 409, etc.). The message header portion401 may include various data fields, such as a data field thatidentifies a source of the message (e.g., a player identifier, such asan Internet Protocol (IP) address, XMPP unique identifier, etc.), and/ora telemetry information message type field. A telemetry informationmessage may be one of various types. For example, one telemetryinformation message type may be a response message type. A responsemessage may be transmitted (e.g., by a player, downstream device, etc.)in response to a command that requests various telemetry information(e.g., a status command). Another example of a telemetry informationmessage type may be an unsolicited message type. An unsolicited messagemay be transmitted (e.g., by a player, downstream device, etc.), whenthe telemetry information message is not being transmitted in responseto a command. In some arrangements, for example, a player may transmittelemetry information according to a schedule (e.g., a schedule based ontime of day, a periodic transmission schedule, etc.). The telemetryinformation messages transmitted in accordance with this schedule may beunsolicited messages.

The telemetry information message type field may identify the type,include one or more separation characters, and/or include additionalinformation related to the type. Separation characters can includecharacters such as punctuation characters (e.g., ‘:’, ‘::’, ‘,’, ‘/’,etc.). An unsolicited message may be identified by including an“unsolicited” character string in the type field. In one example, thetelemetry information type field for an unsolicited message may includean “unsolicited/” character string. A response message may be identifiedby including a “response” character string in the type field. Additionalinformation related to the type may include a command identifier and/orone or more command parameters to identify the command that responsemessage is in response to. In one example, the telemetry informationtype field for a response message that is in response to a statusmessage requesting a brief status message may include a“response/status:brief/” character string. In another example, thetelemetry information type field for a response message that is inresponse to a status message requesting a full status message mayinclude a “response/status:full/” character string.

In some embodiments, the value field of a telemetry information message(e.g., value field 403 of FIG. 4A) may include a value portion and/or alabel portion. In some embodiments, the value and label portions mayboth include one or more alphanumeric characters. Additionally, thevalue field may include one or more separation characters (e.g.,punctuation characters, such as ‘:’, ‘::’, ‘,’, ‘/’, etc.). A valueportion of a value field may include the telemetry information gatheredby a downstream device, such as values representing events, traces,operating conditions and the like of the downstream device. In somearrangements, each value portion of the telemetry information messagemay represent a single datum of telemetry information (e.g., a singleevent, a single datum of trace data, a single operating condition,etc.). A label portion of a value field may include information thatidentifies the telemetry information included in an associated valueportion (e.g., identifying the event, trace datum, operating condition,etc. of the value portion included in the same value field). In someinstances, the labels may allow for the values to be parsed from thetelemetry information messages. Various types of label portions andvalues may be defined for inclusion into a telemetry informationmessage. For example, a telemetry information message may include, amongothers, one or more of the following types of value fields.

-   -   A revision field: the value portion of a revision field may        identify a client revision number, such as a revision number of        the downstream device, and/or a revision number of the player of        the downstream device. The label portion may be an identifier        such as a “rev=” character string. An example revision field may        be a “rev=1.3” character string.    -   An address field: the value portion of an address field may        identify an address, such as an IP address, of the downstream        device. The label portion may be an identifier such as an “ip=”        character string. An example revision field may be an        “ip=1.100.9.43” character string.    -   A play status field: the value portion of a play status field        may identify a current state of the device, such as whether a        content asset (e.g., the asset of the current manifest) is        stopped, paused, playing, etc. The label portion may be an        identifier such as a “playerstate=” character string. An example        play status field that identifies a stopped state of the device        may be a “playerstate=Stopped” character string. An example play        status field that identifies a paused state of the device may be        a “playerstate=Paused” character string. An example play status        field that identifies a playing state of the device may be a        “playerstate=Playing” character string.    -   A video playback rate field: the value portion of a video        playback rate field may identify a rate of playback of the        device, such as the bitrate of the encoded video of the current        manifest (e.g., programming for a particular “channel” such as        NBC, video-on-demand asset, etc.). The video playback rate may        be represented in different units, such as kilobits per second,        megabits per second, etc. The label portion may be an identifier        such as a “videobw=” character string. An example video playback        rate field that identifies a bitrate of 32 kilobits per second        may be a “videobw=32 kb” character string.    -   An audio playback rate field: the value portion of an audio        playback rate field may identify another rate of playback of the        device, such as the bitrate of the encoded audio of the current        manifest. Similar to the video playback rate, the audio playback        rate may be represented in different units, such as kilobits per        second, megabits per second, etc. The label portion may be an        identifier such as an “audiobw=” character string. An example        video playback rate field that identifies a bitrate of 1        megabits per second may be an “audiobw=1 mb” character string.    -   A manifest field: the value portion of a manifest field may        identify the current manifest, such as the currently decoded        service or some other service identifier. In some arrangements,        the value portion of a manifest field may identify the current        manifest by an address, such as an address of the content asset        being consumed at the downstream device (e.g., an IP address or        the like), and/or a file location of the content asset being        consumed at the downstream device (e.g., a URL of the manifest        file being used to locate/fetch the currently consumed content        asset, a URL of the currently consumed content asset file,        etc.). The label portion may be an identifier such as a        “manifest=” character string. An example manifest field may be a        “manifest=http://service.lab.bdn.xcal.tv/Manifest” character        string.    -   A fullscreen status field: the value portion of a fullscreen        status field may identify whether current content asset/manifest        is being displayed using a fullscreen. The label portion may be        an identifier such as a “fullscreen=” character string. An        example fullscreen status field that identifies fullscreen        display may be a “fullscreen=True” character string. An example        fullscreen status field that identifies a non-fullscreen (e.g.,        windowed) display may be a “fullscreen=False” character string.    -   A message field: the value portion of a message field may        include textual notes or other information to a chat room that        provide additional details on the operation of the device. In        some arrangements, a user could be able to select the text that        is included in the message field (e.g., from a pull down menu,        or a text input user interface). For example, a user could enter        details on what they are experiencing, such as “video reception        is abnormal” or “audio keeps turning off”, etc. The label        portion may be an identifier such as a “message=” character        string. An example message field may be a “message=audio keeps        turning off” character string.

Other value fields may be defined dependent on the trace capabilities ofthe player and/or downstream device. For example, as will be discussedin detail below, the downstream device may have trace settings that aremodifiable by commands sent from a manager. The trace settings may bemodifiable according to different trace areas (e.g., commands may causeone or more trace areas to be activated or de-activated). Each tracearea may relate to particular operations, events, etc., of thedownstream device. A telemetry information message may include one ormore value fields related to the active trace areas. The value fieldsrelated to the active trace areas may be similar to the above describedvalue fields (e.g., they include a value portion and a label portion,etc.). In one example, one possible trace area may be related toadvertisement trace area. When the advertisement trace area is active, atelemetry information message may include a value field identifying anadvertisement that was played at the downstream device (e.g.,“ad_id=1234”). In another example, when the advertisement trace area isactive, a telemetry information message may include a value fieldidentifying that an interactive advertisement application was used,and/or the length of time (e.g., in minutes) the user interacted withthe advertisement (e.g., “ad_app=42” and/or “ad_app_time=14.321”).

In another example, the trace areas may be related to a streamingprotocol used within the system. The streaming protocol may have definedvarious debugging tools that can trace information and/or conditions ofa datastream using the protocol. One example protocol is MicrosoftSmooth Streaming. In one instance, the trace areas that can be activatedinclude the different traces of the protocol's debugging tools.

FIG. 4B illustrates an example chat room display for a monitored roomthat includes different telemetry information messages. This examplechat room display is an illustration of information sent to a monitoredroom (e.g., posted to the monitored room). As illustrated, the monitoredroom has multiple players joined to the room (e.g., players identifiedin the illustration in part by “bf-laptop”, “jvd-mac-home”,“jvd-dev-lt”, “bf-home-pc”, etc.) and multiple telemetry informationmessages posted by the players to the monitored room (e.g., messages453, 457, 461, 465, etc.). Each message is associated with a time code,such as time code 451, and each message is associated with informationidentifying the source of the message (e.g., the player or manager). Forexample, telemetry information message 453 was sent from the playeridentified by identifying information 455 (e.g., “bf-laptop(a05ce8b0)”). Telemetry information message 457 was sent from the playeridentified by identifying information 459 (e.g., “jvd-mac-home(45c9aa4b)”). The messages may describe different states, operatingconditions, etc., of the player. For example, message 453 includes,among other things, a video playback rate field (e.g., “videobw=292.97kB”), and a message field that indicates a seek operation was completed.As another example, message 465 includes, among other things, a playstatus field indicating that video is currently playing (e.g.,“playerstate=Playing”), and a message field indicating that the playbackrate has been changed to 2.86 MB. Also illustrated by FIG. 4B isinformation related to when a player or manager joins the monitoredroom. Specifically, information 463 is information for a player that hasjust joined the monitored room. The monitored room could also includeinformation (not shown) related to when a player or manager leaves themonitored room.

FIG. 5 illustrates an example structure of a telemetry informationcommand. Commands may allow a content provider, via a manager and/ormonitored room, to interact with a downstream device so that thedownstream device operates in accordance with commands. In somearrangements, such interaction may allow a content provider to activelytroubleshoot issues. Additionally, in some embodiments, commands may besent from a manager to a downstream device either directly from themanager, or indirectly via a monitored room. In some arrangements, acommand may be a XMPP-like message sent to a monitored room. Asillustrated in FIG. 5, commands may include a target portion 501, acommand identifier portion 503, and/or one or more parameters (e.g.parameter 1 505, parameter 2 507, parameter N 509, etc.).

The target portion 501 may include a data field (e.g., an alphanumericstring of characters) that identifies a destination of the command(e.g., a player identifier, such as an Internet Protocol (IP) address,XMPP unique identifier, a device group identifier, etc.). The commandidentifier field 503 may include a data field that identifies a definedcommand that the destination device can process. The number of parameterfields included in the command may be based on the command identifier(e.g., a first command may require one parameter, a second command mayrequire two parameters, a third command may require zero parameters,etc.). One or more separation characters may be included between thevarious portions of the command (e.g., punctuation characters such as‘:’, ‘::’, ‘,’, ‘/’, etc.). A plurality of commands may be defined. Forexample, one or more commands, among others, may be defined.

-   -   A play command: a play command may cause the downstream device        to start playing according to the device's current manifest. An        example command identifier may be a “play” character string. In        some arrangements, a play command may not require any        parameters. An example play command that is directed towards a        particular downstream device (e.g., player 309-a of FIG. 3) may        be a “client-player309-a@1.1.100.101:play” character string. An        example play command that is directed towards all downstream        devices that are joined in a monitored room may be an “all:play”        character string.    -   A stop command: a stop command may cause the downstream device        to stop playing. An example command identifier may be a “stop”        character string. In some arrangements, a stop command may not        require any parameters. An example stop command that is directed        towards a particular downstream device (e.g., player 309-a of        FIG. 3) may be a “client-player309-a@1.1.100.101:stop” character        string. An example stop command that is directed towards all        downstream devices that are joined in a monitored room may be an        “all:stop” character string.    -   A fast-forward command: a fast-forward command may cause the        downstream device to begin fast-forwarding through current        content. An example command identifier may be a “forward”        character string. In some arrangements, a fast-forward command        may not require any parameters. In others, a fast-forward        command may include a particular time-code that the device is to        fast-forward to in the current content. An example fast-forward        command that is directed towards a particular downstream device        (e.g., player 309-a of FIG. 3) may be a        “client-player309-a@1.1.100.101:forward” character string. An        example fast-forward command that is directed towards all        downstream devices that are joined in a monitored room may be an        “all:forward” character string.    -   A rewind command: a rewind command may cause the downstream        device to begin rewinding through current content. An example        command identifier may be a “rewind” character string. In some        arrangements, a rewind command may not require any parameters.        In others, a rewind command may include a particular time-code        that the device is to rewind to in the current content. An        example rewind command that is directed towards a particular        downstream device (e.g., player 309-a of FIG. 3) may be a        “client-player309-a@1.1.100.101:rewind” character string. An        example rewind command that is directed towards all downstream        devices that are joined in a monitored room may be an        “all:rewind” character string.    -   A return-to-live command: a return-to-live command may cause the        downstream device to return to live content of the current        content (e.g., the portion of a television show currently being        broadcast over a television “channel”, etc.). An example command        identifier may be a “live” character string. In some        arrangements, a return-to-live command may not require any        parameters. An example return-to-live command that is directed        towards a particular downstream device (e.g., player 309-a of        FIG. 3) may be a “client-player309-a@1.1.100.101:live” character        string. An example return-to-live command that is directed        towards all downstream devices that are joined in a monitored        room may be an “all:live” character string.    -   A manifest load command: a manifest load command may cause the        downstream device to load a manifest file. An example command        identifier may be a “manifest” character string. In some        arrangements, a manifest load command may require one parameter,        such as a parameter identifying the manifest file to load. An        example manifest load command that is directed towards a        particular downstream device (e.g., player 309-a of FIG. 3) may        be a        “client-player309-a@1.1.100.101:manifest:manifest_location_address/manifest_filename”        character string. An example manifest load command that is        directed towards all downstream devices that are joined in a        monitored room may be an        “all:manifest:manifest_location_address/manifest_filename”        character string.    -   A fullscreen command: a fullscreen command may cause the        downstream device to operate in a fullscreen mode (e.g., display        a content asset such as a video asset, a television program,        etc., in fullscreen on an associated display). An example        command identifier may be a “fullscreen” character string. In        some arrangements, a fullscreen command may not require a        parameter. An example fullscreen command that is directed        towards a particular downstream device (e.g., player 309-a of        FIG. 3) may be a “client-player309-a@1.1.100.101:fullscreen”        character string. An example manifest load command that is        directed towards all downstream devices that are joined in a        monitored room may be an “all:fullscreen” character string.    -   A reload command: a reload command may cause the downstream        device to reload a page of a browser being executed at the        downstream device. An example command identifier may be a        “reload” character string. In some arrangements, a reload        command may not require a parameter. An example reload command        that is directed towards a particular downstream device (e.g.,        player 309-a of FIG. 3) may be a        “client-player309-a@1.1.100.101:reload” character string. An        example manifest load command that is directed towards all        downstream devices that are joined in a monitored room may be an        “all:reload” character string.    -   A status command: a status command may cause the downstream        device to respond with a telemetry information message. An        example command identifier may be a “status” character string.        In some arrangements, a status command may require one        parameter, such as a verbosity level identifier. For example, a        “brief” character string parameter may cause the downstream        device to respond with a telemetry information message that        includes information such as the downstream device's revision        number, IP address, a play state identifier, one or more        bitrates, a current manifest identifier, a fullscreen status        identifier, etc. As another example, a “full” character string        parameter may cause the downstream device to respond with a        telemetry information message that includes the same information        as the device would include in its response to the “brief”        status command (e.g., the downstream device's revision number,        IP address, a play state identifier, one or more bitrates, a        current manifest identifier, a fullscreen status identifier,        etc.), as well as additional information related to the        downstream device. An example “brief” status command that is        directed towards a particular downstream device (e.g., player        309-a of FIG. 3) may be a        “client-player309-a@1.1.100.101:status:brief” character string.        An example “brief” status command that is directed towards all        downstream devices that are joined in a monitored room may be an        “all:status:full” character string. An example “full” status        command that is directed to a particular downstream device may        be a “client-player309-a@1.1.100.101:status:full” character        string. An example “full” status command directed towards all        downstream devices that are joined in a monitored room may be an        “all:status:full” character string.    -   A trace command: a trace command may cause the player and/or        downstream device to change trace settings. For example, a trace        command may cause the downstream device to activate one or more        trace areas of the downstream device's diagnostic and/or        debugging tools. Additionally, a trace command may cause the        downstream device to change and/or set a verbosity level        associated with a trace area. An example command identifier may        be a “trace” character string. In some arrangements, a trace        command include at least two parameters. For example, a trace        command may include a first parameter identifying a trace area        to activate and a second parameter identifying a verbosity level        for the trace area. In some arrangements, a trace command may        include additional parameters identifying additional trace areas        to activate and additional verbosity levels for the additional        trace areas.    -   A plurality of different verbosity levels is possible. For        example, a first verbosity level may cause the downstream device        to transmit different (e.g., less) telemetry information related        to a particular active trace area than would be transmitted        under another verbosity level. In some arrangements, a        downstream device may be configured to transmit telemetry        information for a particular active trace area according to six        different verbosity levels, such as an assertion level (e.g.,        identified by a verbosity level identifier such as a “Assertion”        character string), an error level (e.g., identified by a        verbosity level identifier such as a “Error” character string),        a fatal error level (e.g., identified by a verbosity level        identifier such as a “Fatal” character string), an informational        level (e.g., identified by a verbosity level identifier such as        a “Informational” character string), a verbose level (e.g.,        identified by a verbosity level identifier such as a “Verbose”        character string), a warning level (e.g., identified by a        verbosity level identifier such as a “Warning” character        string), etc. The appropriate verbosity level identifier may be        included as a parameter in the trace command.    -   A plurality of different trace areas is possible. Each trace        area may relate to a particular operation, event, status, etc.,        of the downstream device. Additionally, each trace area may be        identified by its own trace area identifier. For example, a        trace command may cause the downstream device to activate one or        more trace areas related to the operation of the downstream        device. One trace area related to the operation of the        downstream device may be an advertisement related trace area.        Activating an advertisement trace area may cause the downstream        device to transmit telemetry information related to advertising,        such as indications that an advertisement was played at the        downstream device and/or indications that an interactive        advertisement application was used. In one instance, an        advertisement trace area may be identified by a trace area        identifier such as an “AdsInsert” character string.    -   Other possible trace areas may include trace areas related to        media asset consumption events and status (e.g., asset        consumption trace areas), such as information related to content        packets and the processing of content packets. Yet other        possible trace areas may include trace areas related to network        operations (e.g., network operation trace areas), such as        information related to network get requests and received        responses to the network get requests. Yet other possible trace        areas may include trace areas related to various events and        operations of the device (e.g., operational trace areas), such        as information related to logging operations of the device,        statistics of the device's operation, etc. Some example trace        area identifiers are “ReportFragmentDetails”,        “ReportMBRChanges”, “ReportDownloadTimes”, etc. Additionally,        another possible trace area causes the downstream device to        activate all tracing areas (e.g., activate all tracing area).    -   An example trace command that is directed towards a particular        downstream device (e.g., player 309-a of FIG. 3) may be a        “client-player309-a@1.1.100.101:trace:AdsInsert::Assertion”        character string. An example trace command that is directed        towards all downstream devices that are joined in a monitored        room may be an “all:trace:Manifest::Warning” character string.    -   A de-activate trace command: a de-activate trace command may        cause the downstream device de-activate all active traces. An        example command identifier may be a “traceoff” character string.        In some arrangements, a de-activate trace command may not        require a parameter. An example de-activate trace command that        is directed towards a particular downstream device (e.g., player        309-a of FIG. 3) may be a        “client-player309-a@1.1.100.101:traceoff” character string. An        example manifest load command that is directed towards all        downstream devices that are joined in a monitored room may be an        “all:traceoff” character string.

FIG. 6A illustrates an example method for monitoring and transmittingtelemetry information at a downstream device. In some embodiments, thedownstream device may perform the example method illustrated in FIG. 6Avia a player (e.g., player 309-a of FIG. 3). At step 601, a player maytransmit a request to join a monitored room (e.g., player 309-a of FIG.3 transmits a request to join monitored room 305 of FIG. 3 to monitoredroom 305). The request to join a monitored room may include informationrelated to a downstream device, player, monitored room, managementserver, manager, etc. For example, in some embodiments, the request tojoin a monitored room may include information identifying the downstreamdevice (e.g., a media access control (MAC) address, internet protocoladdress, etc., of device 307-a of FIG. 3) and/or the player (e.g., anXMPP unique identifier of player 309-a of FIG. 3, such as“playerentity309-a@100.1.168.1”). Additionally and/or alternatively, therequest to join a monitored room may include information identifying amanagement server (e.g., an internet protocol address of managementserver 301 of FIG. 3), a manager (e.g., an identifier, such as an XMPPunique identifier, of manager 303 of FIG. 3), and/or a monitored room(e.g., an identifier of a monitored room 301 of FIG. 3). In one example,the request to join a monitored room may include information identifyinga particular monitored room that the player requests to join. In somearrangements where the request identifies a particular monitored room(e.g., a pre-determined monitored room). Additionally, in someembodiments, the request to join may not include an identification of aparticular monitored room.

The player may determine to transmit the request to join a monitoredroom in various ways. For example, a user may be able initiate thetransmission of a request via a user interface of the downstream device.In one example, a user is experiencing a problem (e.g., bad videoquality, etc.) and the user may select an option on the user interface(e.g., “automatically troubleshoot”) that causes the request to join tobe transmitted. In some arrangements, the user interface may allow auser to identify a particular problem that is being experienced. Theplayer may transmit a request that identifies a particular monitoredroom based on the identified problem. To determine the particularmonitored room, the player may analyze a stored monitored room statustable (e.g., a stored table identifying the monitored room, an addressof the server for the monitored room, and information identifying thepurpose of the monitored rooms, etc.) to identify a monitored room thatis associated with the identified problem. From the monitored roomstatus table, the information for the request may be extracted (e.g., anidentifier of the monitored room, an address of the server, etc.) andthe request to join the monitored room may be subsequently transmitted.

In other arrangements, the request to join a monitored room may betransmitted upon initiation of the player on the downstream device. Aplayer may be initiated in various ways. For example, a player may beinitiated on the downstream device based on a particular time of day(e.g., off-peak hours, such as early morning), the downstream devicepowering on, the decoding a particular service (e.g., begin decoding toa video-on-demand service, a program guide service, begin decoding datafor a particular television “channel” such as NBC, begin decoding alinear service, etc.), the pressing of a particular button on adownstream device's input device (e.g., pressing a “help” button on aremote control, etc.), etc. Another event and/or state can be when thedownstream device remains idle for a particular amount of time and/orwhen the downstream device begins to execute an idle device process,such as a screen-saver application. In some arrangements the player canbe a part of the screen-saver application. In yet another arrangement,the downstream device can start up a player based on the reception of aparticular command from a manager (e.g., an activate player command).

At step 603, the player may receive an acknowledgement of a successfulroom join. The acknowledgement may include information such as aresponse code for the transmitted request to join a monitored room thatindicates that the player was successfully joined to a monitored room.The player may store a listing of monitored rooms that the player hasbeen joined to.

At step 605, the player may determine whether to transmit telemetryinformation to one or more joined rooms. If the player determines thattelemetry information is to be transmitted, the method may proceed tostep 607. Otherwise the method may proceed to step 611. The player mayperform this determination in various ways. For example, the player maytransmit telemetry information periodically to the monitored rooms whichthe player is joined. In some arrangements where telemetry informationis periodically transmitted, the player may determine whether it is timeto transmit the telemetry information according to the periodicschedule.

In another example, the player may be configured to transmit telemetryinformation based on the occurrence of certain events and/or states ofthe downstream device. In one example where the player transmitstelemetry information based on events and/or states, the player maytransmit information based on a change in the state of the device (e.g.,when a “channel” is changed at the device, when the device moves througha menu structure of a service, such as a video-on-demand service and/orprogram guide). In some arrangements where telemetry information istransmitted based on a change in the state of the device, the player maydetermine whether a state change has occurred since the previoustelemetry information transmission. As yet another example, the playermay transmit telemetry information based on reception of a particularcommand (e.g., a status request command, etc.).

At step 607, the player may gather telemetry information. For example,for each monitored room the player is to transmit telemetry informationto, the player may gather a pre-defined set of telemetry informationthat can be inserted into a telemetry information message (e.g., thecurrent device revision number for a revision field, the current deviceaddress for an address field, the current play status for a play statusfield, the current video playback rate for a video playback rate field,the current audio playback rate for an audio playback rate field, thecurrent manifest identifier for a manifest field, the current fullscreenstatus for a fullscreen status field, etc.). Additionally and/oralternatively, telemetry information may be gathered in accordance withtrace settings. For example, the player may analyze the trace settingsto identify one or more active trace areas and their correspondingverbosity levels. Then, for each identified active trace setting,additional telemetry information may be gathered according to theverbosity level of the respective active trace area (e.g., advertisementrelated telemetry information for an active advertisement trace area,etc.). Once gathered, the player may form a telemetry informationmessage (e.g., an XMPP message including the gathered telemetryinformation) for the respective monitored room using the gatheredtelemetry information.

The trace settings may include trace areas and/or verbosity levels thatare the same as, or similar to, those discussed above with respect toFIG. 5 and the trace command. Additionally, the trace settings may beorganized by monitored rooms (e.g., rooms that the player is currentlyjoined to), thereby allowing the player to transmit different telemetryinformation messages to the different monitored rooms. For example, thedownstream may be joined to multiple monitored rooms and the tracesettings may include active trace areas and corresponding verbositylevels for each of the joined monitored rooms. The active trace areasand/or the verbosity levels of a first joined monitored room may bedifferent than other active trace areas and/or verbosity levels ofanother joined monitored room. In one particular instance, a firstjoined monitored room has only an advertisement trace area active at an“informational” verbosity level, while a second joined monitored roomhas a network heuristics trace area active at a “warning” verbositylevel.

At step 609, the player may transmit the telemetry information to amonitored room. For example, for each monitored room the player is totransmit telemetry information to, the player may transmit the telemetryinformation message to the respective monitored room using, for example,an XMPP protocol. At step 611, the player may determine whether tocontinue gathering and transmitting telemetry information. For example,in some embodiments, if the player remains joined to at least onemonitored room, the method may proceed to step 605. Otherwise, themethod may end. Additionally, in some arrangements, the determination tocontinue gathering and transmitting telemetry information may includedetermining whether to leave a monitored room. The determination toleave a monitored room may be based on a state of the downstream device(e.g., is the device decoding the video-on-demand service, thedownstream device is no longer in a “help” or “troubleshooting” relatedservice, etc.), and/or based on user input indicating a room should beexited (e.g., a user presses an exit button associated with a joinedmonitored room). A monitored room may also be exited based on a commandreceived from a manager. If it is determined to leave a monitored room,the player may transmit a message requesting to leave the monitoredroom.

FIG. 6B illustrates an example method for processing a command at adownstream device. At step 641, the player may determine whether acommand directed to the player and/or downstream device has beenreceived from a manager. In some embodiments, a command may be “posted”in the monitored room. For example, a manager may send a command to amonitored room, and the monitored room may transmit the command to othermembers of the monitored room (e.g., to the managers and players thathave joined the monitored room). The player may monitor messagesreceived from the monitored room for a command directed towards theplayer and/or downstream device (e.g., a command that identifies theplayer/downstream device by the XMPP unique identifier in a target fieldof the command) and/or for a command directed towards all or a group ofdownstream devices (e.g., a command that includes an “all” characterstring in the target field of the command may be directed towards alldownstream devices/players joined in a monitored room). When the playerdetermines that a command directed to the downstream device has beenreceived, the method may proceed to step 643. Otherwise, the method mayend.

At step 643, the player identifies the command. The received command mayinclude a command identifier. For example, the player may identify astatus command by identifying a command identifier that includes a“status:brief” character string. Additionally, depending on the commandidentifier, the received command may also include one or moreparameters. The player may identify the command based on the commandidentifier and, if needed, extract the parameters from the receivedcommand. For example, the player may identify a manifest command byidentifying a command identifier that includes a “manifest” characterstring. The player, upon identifying the “manifest” character string mayparse the command to extract the manifest command parameter (e.g.,extract a character string identifying the manifest file name/address).

At step 645, the player and/or the downstream device processes theidentified command. The processing of the command depends on the type ofcommand received. As discussed above with respect to FIG. 5, commandscan be of various types. For example, some commands may request thedownstream device to change states and/or perform a particular action(e.g., a play command, a stop command, a manifest command, a reloadcommand, a fullscreen command, etc.). When such a command is received,the downstream device may perform the requested action (e.g., play thecurrent manifest, stop playing the current manifest, begin decoding dataaccording to a requested manifest, reload the current browser page,toggle fullscreen, etc.).

Some commands may request the player to change the trace settings of thedownstream device (e.g., a trace command, a traceoff command, etc.).When such a command is received, the player may change the tracesettings in accordance with the identified command and/or the one ormore parameters of the command (e.g., activate the specified tracingarea(s) and at the specified verbosity level(s), turn off all tracing,etc.).

Additionally, some commands may request a response from the player(e.g., a status command). When such a command is received, the playermay proceed to determine and transmit the response. For example, onecommand that requests the response may be a status command. The statuscommand may be followed by a parameter indicating the verbosity level ofthe requested status response (e.g., brief, full, etc.). When a statuscommand is received, the player may gather telemetry informationaccording to the status command's parameter, place the gatheredtelemetry information in a telemetry information message, and transmitthe telemetry information message to the monitored room.

The header of the telemetry information may indicate that the message isa response to a command and/or may indicate the command (e.g., atelemetry information message type field may indicate “response”,“response/status:brief”, “response/status:full”, or “status:brief”,etc.). In one example, a player receives a status message indicating averbosity level of “brief” (e.g., “status:brief”). In response, theplayer gathers telemetry information according to the “brief” verbositylevel, such as a revision number of the downstream device, an IP addressof the downstream device, a current manifest identifier, a stateidentifier of the current manifest (e.g., playing, paused, stopped,etc.), a playback rate, and a fullscreen status (e.g., “true” if thecurrent asset/manifest is being viewed in fullscreen; “false” if thecurrent asset/manifest is not being viewed in fullscreen), etc. Oncegathered and placed in a message, the response may be transmitted to amonitored room. One example telemetry information message transmitted inresponse to a “status:brief” message could be:

-   -   “response/status:brief/rev=1.1::ip=1.1.168.101::playerstate=Stopped::videoobw=32        kB::audiobw=29 kB::manifest=622::fullscreen=False”

FIG. 7A illustrates an example method for processing telemetryinformation at a manager. At step 701, a manager may transmit a requestto join a monitored room. The request to join a monitored room may besimilar to the request transmitted from a player, as described above.Additionally, in some embodiments, operators of the central office maydetermine when a manager requests to join a monitored room, and/or whatmonitored rooms the manager requests to join. At step 703, the managermay receive an acknowledgement of a successful room join. The receivedacknowledgement may be similar to the acknowledgement received by aplayer, as described above.

At step 705, the manager may determine whether telemetry information hasbeen received. In some arrangements, the manager monitors the telemetryinformation messages that are “posted” in a monitored room. For example,a manager may receive a telemetry information message from a player viaa monitored room. In some arrangements, the player may transmit atelemetry information message to a monitored room (e.g., an unsolicitedtelemetry information message, a response telemetry information message,etc.). The monitored room may process the message and transmit it toother member managers and players, such as the managers and players thatare joined to the room. When the manager determines that telemetryinformation has been received, the method may proceed to step 707.Otherwise, the method may continue to monitor the monitored room fortelemetry information.

At step 707, the manager may process the received telemetry information.The processing may include parsing the telemetry information messageand/or identifying various portions of the message, such as themessage's header and various value fields (e.g., a video playback ratefield, an audio playback rate field, a manifest field, etc.).

At step 709, the manager may determine whether the received telemetryinformation is relevant. What is relevant may depend on the type ofmanager. For example, in some embodiments, a manager can be configuredto monitor for one or more particular types of telemetry information(e.g., monitor for particular value field types in the telemetryinformation message, such as a video playback field, an audio playbackfield, a manifest field, etc.). To monitor for the one or moreparticular types of telemetry information, a manager may determinewhether the received telemetry information message includes informationof the one or more particular type (e.g., determine whether the messageincludes a video playback field, an audio playback field, etc.), andmay, based on determining that the message includes information of theparticular types, identify the relevant value fields from the telemetryinformation message. Various types of managers may be configured tomonitor for specific types of telemetry information. In one example, avideo service manager may determine whether the received telemetryinformation message includes telemetry information related to videoservices (e.g., bit rate information, packet loss information, name of acurrent manifest of a device, name of current video service beingconsumed at a device, information related to the status of the device,such as whether video is currently playing, etc.). In another example,an advertising manager may determine whether the telemetry informationmessage includes telemetry information related to advertising, such asadvertisement insertion data (e.g., the number of times an advertisementwas inserted), advertisement viewing data (e.g., the number of times anadvertisement was viewed), advertisement viewing duration data (e.g.,the duration for which the advertisement was viewed until a viewerstopped playback of the advertisement, such as by switching channel,etc.), and the like.

At step 711, the manager may extract the relevant information. Uponextraction, the manager may perform further processing and/or analysisof the relevant information. For example, the manager may analyze and/orcorrelate the relevant information (e.g., in real time) with otherinformation, such as other relevant information and/or other serviceinformation (e.g., information from a router, content distributionnetwork information, distribution network topology information, etc.).By performing the analysis and/or correlation between the relevantinformation and other information, a manager can draw conclusions basedon the relevant information. For example, a video service manager may,from the analysis and/or correlation, be able to determine whether adevice is experiencing a network problem. The video service manager mayalso determine a location or root cause of a network problem (e.g., thatrouter 315 of FIG. 3 is a potential cause of a low bit rate, or othernetwork problem) and/or a scope of a network problem (e.g., that a lowbit rate is affecting multiple downstream devices, such as device 307-a,307-b and 307-c of FIG. 3).

In some embodiments, the analysis and/or correlation of the relevantinformation can include comparing the values of various conditions,status information, etc., included in the relevant information and/orother information to determine whether particular criteria and/orconditions are satisfied. In one instance, a manager may analyze therelevant information to determine whether a network problem exists. Onenetwork problem among a number of possible problems that may bedetermined by a manager, such as a video service manager, can be whethera bitrate is below a threshold value. For example, a video servicemanager may analyze the relevant information and determine whether abitrate is below a threshold value. If the bitrate is below a thresholdvalue, the downstream device that sent the telemetry information messagemay be experiencing a video service problem. Other network problems orconditions/criteria can be determined when analyzing and/or correlatingthe relevant information. Generally, what network problems, conditionsand/or criteria can be determined depends on the contents of thetelemetry information (e.g., the value fields included in the relevantinformation). For example, other managers may perform similar analysis(e.g., an advertising manager may create reports based on thesatisfaction of advertising-related thresholds, such as thresholdviewing times for an advertisement, threshold interaction times for anadvertising application, etc.).

In some arrangements, a manager may use additional information whenanalyzing and/or correlating relevant information. For example, topologyinformation of the distribution network may be used by a manager whenanalyzing and/or correlating relevant information. In some instances,the topology information can include information identifying the devices(e.g., routers, MTS, encoders, fragmenters, servers, downstream devices,etc.) of the distribution network, and the locations of the devices inthe network. For example, in some arrangements, the manager may analyzethe topology information and the value fields of relevant telemetryinformation messages to determine where a specific device is in thenetwork. In one instance, the manager locates the downstream device inthe network using an address of the downstream device and the topologyinformation. In other arrangements, the manager may, using the topologyinformation, monitor devices of a first location (e.g., a particular zipcode, devices of a particular MTS, etc.). For example, the manager mayfilter relevant information based on whether the messages are from adevice in a particular location.

In some illustrative embodiments, the manager may be configured toidentify a cause of the network problem, such as identifying a sourcedevice of the network problem and/or a network event that may be causingthe problem based on the relevant telemetry information. For example, avideo service manager may be configured to determine a network eventthat may be causing the network problem. Such network events couldinclude various events caused by the transport and/or processing ofservice information (and other data) throughout the network. In oneinstance, the video service manager can identify that the network isexperiencing a high volume of network traffic, which may be causing anetwork problem such as a low bitrate. The identification of othernetwork events are also possible. As another example, a video servicemanager may be configured to determine a possible source of a networkproblem. In one example, referring to FIG. 3, the illustrated systemincludes router 315 that is capable of transmitting signals to thedownstream devices. In some instances, router 315 may be malfunctioningor operating unexpectedly and causing the downstream devices toexperience a network problem, such as a low bitrate. Based on ananalysis of the telemetry information and topology information, themanager may identify router 315 as a potential source of a networkproblem and gather information related to the router for inclusion in alater message or management report. In some instances, the gatheredinformation may include an identifier of the router, an address of therouter (e.g., IP address), a location of the router, etc.

Additionally, the manager may be configured to identify the scope ofvarious criteria and/or conditions. For example, a manager, such as avideo service manager, may determine that multiple downstream devicesare experiencing a network problem, such as a low bitrate. Based on thedevices experiences the network problem, the video service manager coulddetermine if the devices all reside in a particular location, or if thedevices are throughout different locations in the distribution network.Further, in some arrangements, multiple devices experiencing a networkproblem could be used when identifying a source device/network event ofthe problem. For example, if three devices (e.g., devices 307-a, 307-band 307-c of FIG. 3) are experiencing a network problem, a manager couldanalyze the locations of these devices in the distribution networkand/or the communication paths between a server of the content providerand the devices to determine areas of overlap. These areas of overlapcould include malfunctioning devices. In one instance, a router (e.g.,router 315 of FIG. 3) may be malfunctioning and this router may be inthe communication path to all devices experiencing the problem. Themanager may identify this common router as a possible source of thenetwork problem.

In some embodiments, the further processing of the relevant informationcan include creating a message summarizing the relevant informationand/or any other information determined based on the relevantinformation. For example, a manager may create a management report, orsome other similar message, based on the extracted relevant telemetryinformation and/or the information determined from the analysis and/orcorrelation. For example, a video service manager may create amanagement report that includes relevant telemetry information relatedto video services, such as video rate playback fields, audio rateplayback fields, etc. One example report includes bitrates, packet lossinformation, and other video-service related information. In anotherexample, a report may include the message fields of the relevanttelemetry information messages. In some arrangements amessage/management report may include other information, such as theresults/conclusions of the analysis and/or correlation of the relevantinformation (e.g., location(s), cause(s) and/or potential cause(s) of anetwork problem, a scope of a network problem, etc.). In one example, amessage may include information identifying a potential cause of anetwork problem (e.g., information identifying router 315 of FIG. 3,etc.), information identifying the devices affected by a network problem(e.g., a listing of devices affected by a network problem, such asdevices 307-a, 307-b and 307-c of FIG. 3, etc.), and/or informationidentifying a location and/or scope of the network problem (e.g., ageographical area encompassing the affected devices, etc.).

In some embodiments, the management reports may only be created whenanalysis and/or correlation results in a determination that particularthresholds are satisfied. In one example, a video service manager mayonly generate a report when one or more devices are experiencing anetwork problem, such as a low bitrate, and/or when a potential causecan be identified.

Additionally and/or alternatively, in some embodiments, themessage/report may include information extracted from multiple telemetryinformation messages. For example, the manager may create a report thatincludes the relevant information and/or other information determinedfrom any analysis and/or correlation received in a monitored room over aparticular time period (e.g., a report is periodically created everyfive minutes, every hour, etc.). As another example, a report may becreated based on receiving a particular number of relevant telemetryinformation messages (e.g., a report is generated every fifth telemetryinformation message that is relevant). The report may include all or aportion of the relevant information received since the last report wascreated and/or any information determined based on theanalysis/correlation of the relevant information. In some embodiments, amanagement report may be organized the same as, or similar to, atelemetry information message (e.g., with a header and value fields asillustrated in FIG. 5).

One example message/management report is as follows. In somearrangements, the example management report could be created by a videoservice manager. The example report includes a header, and value fieldsindicating the IP address of a downstream device and a bitrate of thedownstream device. Particularly, the example report illustrates amessage/report that includes information related to a low bitratenetwork problem. The example report, in some arrangements, may betransmitted to another monitored room, downstream device, other systemof the content provider, etc.

-   -   “unsolicited/ip=1.1.168.101::videoobw=32 kB::Message=Device at        1.1.168.101 is experiencing a low bitrate of 32 kB.”

In some embodiments, the manager may transmit the createdmessages/management reports to a destination for further processing. Forexample, in some embodiments, management reports may be transmitted to aserver that causes the reports to be placed into a database and/or ontoa website. Operators may be notified whenever a new management reporthas been transmitted to the database and/or website so that they canview the report and begin responding to the information within thereport (e.g., initiate a customer service session with the user of thedownstream device, initiate a secondary troubleshooting process, etc.)When placed on a website and/or database, the reports may be viewed byan operator of the content provider. As another example using a websiteand/or a database, the messages/reports could be viewed (or informationbased on the messages/reports could be viewed) by an operator of thecontent provider that is assisting the user via a customer service call(e.g., telephone call) or session (e.g., chat session with the customervia a website). During the call or session the operator could view themessage history of the user's device(s) in order to better serve and/orsolve the problems being experienced by the user. The operator couldalso cause commands to be issued to the device of the user (and, in someinstances, subsequently receive telemetry information responsive to thecommands) in order to better serve and/or solve the problems beingexperienced by the user. The operator may also be able to change themode of operation of the downstream device (e.g., from a one way mode ofoperation and vice versa, etc.).

Messages/reports may also be transmitted to a downstream device in orderto display information based on the message/report to a user. Forexample, a notification, such as a pop-up window displayed on atelevision screen, could be displayed that notifies the user of thenetwork problem (e.g., “We are sorry, but your area is experiencing aservice interruption”, etc.). As yet another example, the managementreports may be transmitted to another monitored room and/or manager(e.g., see FIGS. 10-12).

Additionally and/or alternatively, the messages/reports could betransmitted to one or more downstream devices. For example, a manager,such as a video service manager, could transmit a message/report to adownstream device that is determined to be experiencing a networkproblem. The message/report may include information that indicates tothe downstream device that they are likely experiencing a networkproblem. Details on the determined problem could also be included in themessage/report. Upon receiving the message/report, the downstream devicemay display this information for viewing by a user and/or store themessage in a message log, or similar data store.

Referring again to FIG. 7A, at step 713, the manager may determinewhether to continue monitoring the monitored room for telemetryinformation. If the manager is to continue monitoring the monitoredroom, the method may proceed to step 705. Otherwise, the method may end.For example, in some embodiments, an operator of the content providermay cause the manager to stop monitoring the monitored room. In someembodiments, stopping monitoring the monitored room may includetransmitting a message requesting to leave the monitored room.

FIG. 7B illustrates an example method for issuing one or more telemetryinformation commands from a manager to a downstream device (e.g., adownstream device operating in a two-way mode). This example method canbe used to issue commands to a downstream device, cause the downstreamdevice to process the command, and receive telemetry informationresponsive to the commands.

At step 741, the manager may determine whether to issue a command. If itis determined to issue a command, the method may proceed to step 743.Otherwise, the method may proceed to step 749. In some embodiments, thedetermination of whether to issue a command may be based on a scriptbeing processed by the manager.

At step 743, the manager may issue a command. For example, any of thevarious commands may be prepared and transmitted to a downstream device(e.g., via the monitored room): a play command, a play fullscreencommand, a stop command, a manifest load command, a fullscreen command,a reload command, a status command, a trace command, a de-activate tracecommand, etc. In some embodiments utilizing a script, the script maycause a downstream device, via one or more commands issued from themanager to a player of the downstream device, to cycle through one ormore different device states (e.g., decode a video-on-demand service,play a video asset, transmit telemetry information related to thevideo-on-demand service and/or the playing of the video asset).

In some arrangements, the downstream devices may be assigned to devicegroups. In one example, the manager assigns devices associated with theplayers of a monitored room (e.g., devices associated with the 100players joined to the monitored room, etc.) into one or more devicegroups (e.g., divide the devices among 10 device groups, etc.). Themanager may be configured to transmit a command to a particular devicegroup using device group identifiers in the command. Transmitting acommand to a particular device group allows for all members of thedevice group to receive, process, and perform the command. In someembodiments, the manager may dynamically assign devices to the devicegroups. For example, the manager may assign all devices that satisfyparticular conditions and/or criteria to the same device group. In oneparticular example, all devices experiencing a network problem, such asa low bitrate, can be assigned by the manager to the same device group.The manager can then issue a command to all devices experiencing thenetwork problem.

At optional step 745, the manager may receive telemetry information(e.g., a telemetry information message via the monitored room) from thedownstream device. In one example, the manager may monitor for atelemetry information message that is in response to an issued command.To determine whether a received message is in response to the issuedcommand, the manager may examine the telemetry information message typefield of the message based on the issued command (e.g., for a type fieldhaving a value of “response/status:brief” when a brief status commandwas transmitted, for a type field having a value of“response/status:full” when a full status command was transmitted,etc.). Other values could also be included in order to determine whethera received message is in response to an issued command (e.g.,“solicited” as opposed to “unsolicited”, etc., where messages includinga “solicited” character string are sent when they are in response to acommand).

At optional step 747, the manager may process the received telemetryinformation. For example, a manager may process the telemetryinformation to verify that the downstream device is operating asexpected (e.g., a video service manager may verify video-serviceinformation included in the response message, such as verifying thatbitrates, etc. are within expected thresholds, etc.). In one exampleutilizing a script, the script may include verified information, whichcan be compared against information received in the telemetryinformation messages. By comparing the information against the verifiedinformation, the script can determine whether the downstream device isoperating as expected (or incorrectly). In some arrangements, processingthe received telemetry information may include creating one or moremanagement reports and, optionally if reports are created, transmittingthe reports for further processing.

At optional step 749, the manager may determine whether to issue one ormore additional commands. In one example utilizing a script, if thescript is continuing to be processed by the manager, the method mayproceed to step 741. Otherwise, the method may end. In another example,the manager may be configured to issue a second command after issuing afirst command (e.g., issue a status command after issuing a manifestload command, issue a status command after issuing a play command,etc.).

As discussed above, devices may be assigned to device groups andcommands can be issued to members of a device group. In some illustratedembodiments, device groups could be used when a manager is validatingthe operation of some devices of the distribution network. For example,test devices could be established throughout the network, and the testdevices may be assigned to different device groups (e.g., intolocation-based device groups, such as an east-coast device group, aMidwest device group, a northwest device group, etc.) A manager may beconfigured to issue particular commands to these test devices in aparticular order. In one example, a manager may cause test devices of adevice group to receive and decode particular content (e.g., load acertain manifest), and then have the test devices send certain telemetryinformation messages. The manager can analyze the received messages tovalidate that the content is being received correctly for the testdevices of that device group, even if a user is not presently consuming(e.g., watching) the content. In some arrangements, the content beingvalidated may not be available to users for consumption (e.g., viewing).For example, a new content asset could be distributed onto thedistribution network on a Wednesday, but the new asset would not beavailable to users of the network until Friday. Test devices could beset up throughout the network to validate that devices can receive anddecode the new asset prior to it becoming available on Friday. Settingup these test devices may require changing the mode of the devices(e.g., from a one way mode to a two-way mode, etc.).

In some embodiments, a manager may be configured to cause a downstreamdevice to change modes (e.g., from a one-way mode to a two-way mode,from a two-way mode to a one-way mode, etc.). FIG. 8 illustrates anexample method for causing a downstream to switch between the one-wayand two-way modes of operation. At step 801, a manager may determinewhether to change a mode of operation of a downstream device. If it isdetermined to proceed with changing a mode of operation of a downstreamdevice, the method may proceed to step 803. Otherwise, the method mayend. In some embodiments, an operator may cause the manager to proceedwith transmitting a mode change request. In one example, an operator maymodify stored settings that identify the modes of operation that thedownstream devices should currently operate in. Based on the changes tothe stored settings, the manager may determine to transmit mode changerequests to the devices (e.g., a first mode change request identifying atwo-way mode of operation is to be transmitted to a first downstreamdevice, a second mode change request identifying a one-way mode ofoperation is to be transmitted to a second downstream device, etc.).Additionally, in some arrangements utilizing a script, an action of ascript may cause the manager to proceed with transmitting a mode changerequest.

At step 803, the manager may transmit a mode change request to adownstream device. In some arrangements, the mode change request may besimilar to a command (e.g., embodied as an XMPP message, transmitted toa downstream device via a monitored room, etc.). In others, the modechange request may be separate from other commands issued by the manager(e.g., commands may be transmitted to a downstream device via amonitored room, while mode change requests are sent directly to thedownstream device, etc.). Additionally, in some arrangements, the modechange request may identify a particular mode of operation to change to(e.g., a mode change request identifies a one-way mode of operation, asecond mode change request identifies a two-way mode of operation). Adownstream device, upon receiving a mode change request, may cause theplayer to change to a mode of operation in accordance with the request(e.g., switch to the mode of operation identified by the request, switchfrom a one-way mode of operation to the two-way mode of operation,switch from a two-way mode of operation to a one-way mode of operation,etc.). Upon completing the mode change, the downstream device may, insome embodiments, transmit an acknowledgement of the mode change.

At step 805, the manager may receive an acknowledgement of a mode changefrom a downstream device. The acknowledgement may identify whether themode change was successful or not. At step 807, the manager determineswhether the mode change was successful (e.g., by examining theacknowledgement). If the mode change was successful, the method may end.Otherwise, the method may proceed to step 803 to re-transmit a modechange request.

As discussed above, a monitored room may receive telemetry informationmessages and commands. FIG. 9A illustrates an example method forreceiving telemetry information at a monitored room according to one ormore aspects described herein. At step 901, a monitored room may receivea message (e.g., from a player, manager, or other source). In someembodiments, the received message may be a command, a telemetryinformation message, or a mode change request.

At step 903, the received message may be “posted” in the monitored room(e.g., posted into the chat room). In some embodiments, the monitoredroom may forward messages to members of the monitored room (e.g.,players and managers that have joined the monitored room). For example,a monitored room may receive a telemetry information message andtransmit the message to some or all of the monitored room's membermanagers and players. As another example, the monitored room may receivea command directed towards a particular downstream device. Upon receiptof a command, the monitored room may analyze header information of thecommand to identify the command's destination. Then, based on theidentified destination, the monitored room may transmit the command tothe destination device(s). Commands may be directed to particulardownstream devices and/or multiple devices via the header information.In some embodiments using an XMPP-like messaging protocol, thedestination may be identified by the XMPP unique identifier. In somearrangements, forwarding messages to members of the monitored room mayallow for the members of a monitored to simulate a “chat” room.

As discussed above, managers and players may join one or more monitoredrooms. FIG. 9B illustrates an example method for joining a player ormanager into a monitored room. At step 941, a request to join amonitored room may be received by a monitored room. The request mayidentify a particular player, manager, downstream device, server, etc.,that is requesting to join the monitored room. At step 943, themonitored room may join the identified player to the monitored room. Forexample, the monitored room may modify stored data listing currentmembers of the monitored room. At step 945, the monitored room maytransmit an acknowledgement of the monitored room join. For example, themonitored room may transmit an acknowledgement to the requesting playeror manager that includes information identifying the player or managerwas successfully joined to the room. Additionally, in some arrangements,the monitored room may transmit messages that inform the members of themonitored room of the other members (e.g., transmit a messageidentifying a new member whenever a new player or manager joins themonitored room, transmit a message including an identification of allmembers of the monitored room to a member of the monitored room, etc.).

Managers, players and/or monitored rooms may be organized in variousways. For example, FIG. 3, which was discussed above, illustrates anexample system where players are organized to join a particularmonitored room. As another example, FIG. 10 illustrates an examplehierarchical system for monitoring telemetry information and using thetelemetry information to identify problems of a distribution network. Asillustrated in FIG. 10, players 1009-a and 1009-b, of devices 1007-a and1007-b, respectively, may be configured to join monitored room 1005-a ofmanagement server 1001. Device 1007-a and 1007-b may be connected tomanagement server 1001 via distribution network 1010. Players 1009-c,1009-d, and 1009-e, of devices 1007-c, 1007-d, and 1007-e, respectively,may be configured to join monitored room 1005-b of management server1001. Device 1007-c and 1007-d may be connected to management server1001 via distribution network 1011, while device 1007-e may be connectto management server 1001 via distribution network 1011 and othernetwork 1020.

In one or more arrangements, the different players may be configured tojoin the monitored room based on the location of the devices. Forexample, device 1007-a and 1007-b may be at or near a first location(e.g., a first zip-code, such as 20001) and be configured to joinmonitored room 1005-a, while device 1007-c, 1007-d, and 1007-e, may beat or near a second location (e.g., a second zip code, such as 22043)and be configured to join monitored room 1005-b. Accordingly, manager1003-a may monitor for conditions and/or criteria (e.g., a networkproblem) for devices at or near the first location, and manager 1003-bmay monitor for conditions and/or criteria (e.g., a network problem) fordevices at or near the second location. Supervisor manager 1013 canmonitor for conditions and/or criteria (e.g., a network problem)occurring at one or both of the locations. Additionally, the managersand rooms may be organized into different levels, with each level for adifferent geographic size (e.g., local, regional, national, etc.). Forexample, monitored room 1005-a and 1005-b may be for monitoring devicesat a local level (e.g., devices of a single neighborhood or metro area,etc.), while monitored room 1015 may be for monitoring devices at anational level (e.g., all devices in the network of the contentprovider).

In some arrangements, the different players may be configured to jointhe monitored room based on the type of telemetry information that willbe transmitted while joined to the monitored room. For example, devices1007-a and 1007-b may desire to transmit video service-related telemetryinformation, so they request to join monitored room 1005-a. Devices1007-c, 1007-d, and 1007-e, may desire to transmit advertising-relatedtelemetry information, so they request to join monitored room 1005-b.Particular devices of the distribution network may be capable oftransmitting signals to the downstream devices of the differentmonitored rooms and/or downstream devices of different locations, suchas router 1040.

As illustrated in FIG. 10, monitored room 1005-a is monitored by manager1003-a. Monitored room 1005-b is monitored by manager 1003-b. In somearrangements, manager 1003-a and manager 1003-b may be the same type ofmanager (e.g., both may be video service managers). In otherarrangements, manager 1003-a and manager 1003-b may be different typesof managers (e.g., manager 1003-a may be a video service manager andmanager 1003-b may be an advertising manager). The managers may processtelemetry information and/or issue command in a manner that is the sameor similar to the example methods illustrated in FIGS. 7A and 7B.

Managers 1003-a and 1003-b may transmit telemetry information, messagesand/or management reports (e.g., via an XMPP-like message) to anothermonitored room. As illustrated in FIG. 10, manager 1003-a and 1003-b maytransmit messages/management reports to monitored room 1015 ofmanagement server 1002. Monitored room 1015 may be monitored by manager1013. For example, manager 1013 may monitor the telemetryinformation/management reports that are transmitted from managers andplayers 1003-a and 1003-b, and process the received messages in a mannerthat is the same or similar to the method illustrated in FIG. 7A. In oneexample, FIG. 11 illustrates an example method for hierarchicallyprocessing telemetry information. The example method of FIG. 11 may beperformed by manager 1013 of FIG. 10. Referring to the methodillustrated in FIG. 11, at step 1101, a supervisor manager (e.g.,manager 1013 of FIG. 10) may receive, via a monitored room (e.g.,monitored room 1015 of FIG. 10), telemetry information, messages and/ormanagements reports from a first manager (e.g., manager 1003-a of FIG.10). At step 1103, the supervisor manager may receive, via the monitoredroom, telemetry information, messages and/or management reports (e.g., asecond management report) from a second manager (e.g., manager 1003-b ofFIG. 10).

At step 1105, the supervisor manager may process the telemetryinformation, messages and/or reports received from the managers. Theprocessing may include parsing information and/or identifying variousportions the information, such as one or more value fields included ineach report (e.g., a video playback rate field, an audio playback ratefield, a manifest field, etc.).

At step 1107, the supervisor manager may determine whether the receivedinformation satisfies certain conditions and/or criteria. If thesupervisor manager determines that the received information satisfiescertain conditions and/or criteria, the method may proceed to step 1109.Otherwise the method may end. For example, the supervisor manager couldcompare the information received from each manager to determine whetherthe information identifies the same or similar network problems. In oneexample, the information received from the first manager may identify alow bitrate of a first downstream device via a video playback rate fieldand the information received from the second manager may identify a lowbitrate of a second downstream device via a video playback rate field.Because both managers have identified a low bitrate network problem, thesupervisor manager may proceed to step 1109 (e.g., the condition of asimilar or identical network problem has been satisfied). As anotherexample, the first manager report may determine that the receivedinformation include similar relevant information based on the value ofthe low bitrate (e.g., a bitrates of 6 and 6 are the same, bitrates of 9and 6 may be similar, while bitrates of 20 and 6 may not be similar). Ifthe value of the low bitrates are the same or similar to each other, thesupervisor manager may proceed to step 1109. Supervisor managers may beconfigured to check the received information for various otherconditions and/or criteria (e.g., information is related to a particularlocation in the network; information is related to a particularadvertisement, information is related to a particular content asset,etc.).

At step 1109, the supervisor manager may perform further processing onthe received information. For example, the supervisor manager mayperform analysis and/or correlation on the received information. Suchanalysis and/or correlation could proceed in a manner that is the sameor similar to the analysis and correlation described above with respectto step 711 of FIG. 7A (e.g., determine a scope of a network problem, alocation of a network problem, a possible cause of the network problem,the devices affected by the network problem, etc). As another example,the supervisor manager could create a message/management report based onthe received information and/or any results of the analysis and/orcorrelation. The created message/report could be created to includesimilar types of information as those described with respect to step 711of FIG. 7A. For example, if the supervisor manager has determined that asimilar network problem has been identified by the managers, the messagecould include data identifying any downstream devices that areexperiencing the problem, data identifying a scope of the problem thatwas determined by the supervisor manager, a location of the problem thatwas determined by the supervisor manager, a possible cause of theproblem that was determined by the supervisor manager, etc.Additionally, in some embodiments, the created message/report may beused similarly to other messages/management reports (e.g., transmittedfor further processing, etc., as described above with respect to FIG.7A).

In some arrangements, a hierarchical system can be used to identifyconditions and/or criteria of the distribution network that affect alarger area, or a larger number of devices. For example, referring toFIG. 10, the illustrated system includes router 1040 that is capable oftransmitting signals to downstream devices that are joined to twodifferent monitored rooms (and/or downstream devices of differentlocations). Router 1040 may be malfunctioning and causing the downstreamdevices to experience a low bitrate. Manager 1003-a and manager 1003-bmay both identify that various downstream devices are experiencing thelow bitrate (e.g., manager 1003-a identifies device 1007-a and 1007-b,while manager 1003-b identifies device 1007-c and 1007-d), but they maynot identify router 1040 as a potential source of the problem. In oneinstance, manager 1003-a identifies a device in distribution network1010 as a possible cause, while manager 1003-b identifies a device indistribution network 1011 as a possible cause. Both manager 1003-a and1005-b may send a message that includes information related to thenetwork problem to supervisor manager 1013. Supervisor manager 1013 may,using the information from both managers, determine a new possible causeof the network problem, which may be router 1040.

As discussed above, a monitored room may be monitored by any number ofmanagers. FIG. 12 illustrates an example system for monitoring telemetryinformation and using the telemetry information via some differentmanagers. As illustrated in FIG. 12, players 1209-a and 1209-b, ofdevices 1207-a and 1207-b, respectively, may be configured to joinmonitored room 1205-a of management server 1201. Device 1207-a and1207-b may be connected to management server 1201 via distributionnetwork 1210. Monitored room 1205-a may be monitored by video servicemanager 1203-a, business manager 1203-b, operational manager 1203-c, andthird party manager 1233 of third party management server 1231.

Video service manager 1203-a may monitor the telemetry informationposted in monitored room 1205-a for information related to videoservices (e.g., bit rates, etc.). Business manager 1203-b may monitorthe telemetry information posted in monitored room 1205-a forinformation related to managing the content provider's business (e.g.,advertisement information such as ad insertion information, viewinghabit information, such as the current service(s) being decoded, etc.).Operational manager 1203-c may monitor the telemetry information postedin monitored room 1205-a for information related to operating thecontent distribution network (e.g., bit rates, current manifest filenames, current service(s) being decoded, viewing habit information,etc.). For example, an operational manager may track when devices begindecoding a service in order to track the number of concurrent consumers(e.g., viewers) of a service (e.g., current viewer count). Theoperational manager could also track how long a device decodes a service(e.g., service dwell time). In some arrangements, the informationgathered by the operational and/or business managers could be availablefor further analysis. In one example, a content provider could use thegathered information to refine service and/or network architecture tomake service delivery more cost effective and/or efficient.

The content provider may provide third party management server 1231access to management server 1201. Third party manager 1233 may monitorthe telemetry information posted in monitored room 1205-a forinformation related to the third party. For example, third party manager1233 may be an advertising manager of a particular advertiser, and maymonitor the telemetry information for information related to theparticular advertiser (e.g., information identifying that advertisementA of the particular advertiser has been inserted and/or viewed). Asanother example, third party manager 1233 may be a channel/serviceratings manager that monitors the telemetry information to determine oneor more metrics related to viewing habits of the downstream device, suchas a count identifying the number of devices currently decoding aparticular service (e.g., video-on-demand service, NBC televisionprogramming, etc.), a count identifying the number of devices currentlydecoding data for a particular program, etc.

As also illustrated in FIG. 12, one or more of the managers may transmitmessages and/or management reports to another monitored room, such asmonitored room 1215 of management server 1202. Monitored room 1215 maybe monitored by other managers, such as engineering manager 1213.Engineering manager 1213 may monitor the information received viamonitored room 1215 in a manner that is the same as, or similar to, theexample method illustrated in FIG. 11. For example, engineering manager1213 may monitor the telemetry information to determine whether anetwork problem identified by a plurality of management reports affectsmultiple locations of the distribution network.

Aspects of the disclosure have been described in terms of illustrativeembodiments thereof. While illustrative systems and methods as describedherein embodying various aspects of the present disclosure are shown, itwill be understood by those skilled in the art, that the disclosure isnot limited to these embodiments. Modifications may be made by thoseskilled in the art, particularly in light of the foregoing teachings.For example, each of the features of the aforementioned illustrativeexamples may be utilized alone or in combination or subcombination withelements of the other examples. For example, any of the above describedsystems and methods or parts thereof may be combined with the othermethods and systems or parts thereof described above. For example, oneof ordinary skill in the art will appreciate that the steps illustratedin the illustrative figures may be performed in other than the recitedorder, and that one or more steps illustrated may be optional inaccordance with aspects of the disclosure. It will also be appreciatedand understood that modifications may be made without departing from thetrue spirit and scope of the present disclosure. The description is thusto be regarded as illustrative instead of restrictive on the presentdisclosure.

What is claimed is:
 1. A method comprising: transmitting, by a computingdevice, a request for a manager to join a monitored room, wherein themanager is executing on the computing device and the monitored room isconfigured to transmit information among members of the monitored roomusing messaging that conforms to a messaging protocol; receiving, viathe monitored room, first telemetry information related to a firstdevice of a network in a first message conforming to the messagingprotocol; receiving, via the monitored room, second telemetryinformation related to a second device of the network in a secondmessage conforming to the messaging protocol; analyzing, by the manager,the first telemetry information and the second telemetry information todetermine that both the first device and the second device areexperiencing a network problem; and determining, based on thedetermination that both the first device and the second device areexperiencing the network problem, a source device of the network that iscausing the network problem, the source device being different from thefirst device and the second device.
 2. The method of claim 1, furthercomprising: joining the first device and the second device to themonitored room.
 3. The method of claim 1, further comprising:transmitting, to the first device from the manager via the monitoredroom, a command that causes the first device to decode a particularlinear service and begin playback of the particular linear service. 4.The method of claim 1, wherein the network problem comprises a lowbitrate, and wherein analyzing the first telemetry information and thesecond telemetry information to determine that both the first device andthe second device are experiencing the network problem comprises:extracting a first bitrate indicator from the first telemetryinformation, the first bitrate indicator indicating a bitrate at whichthe first device is causing playback of video; extracting a secondbitrate indicator from the first telemetry information, the secondbitrate indicator indicating a bitrate at which the second device iscausing playback of video; determining that both the first bitrate andthe second bitrate are below a threshold value; and responsive todetermining that both the first bitrate and the second bitrate are belowthe threshold value, determining that both the first device and thesecond device are experiencing the low bitrate.
 5. The method of claim1, wherein the network problem comprises one or more of the following: avariation in fragment quality level, or a device buffer event.
 6. Themethod of claim 1, wherein the monitored room comprises a chat room, andthe messaging protocol is one of the following: an instant messagingprotocol, a chat messaging protocol, a real-time text-based messagingprotocol, or Extensible Messaging and Presence Protocol (XMPP).
 7. Themethod of claim 1, wherein determining the source device of the networkthat is causing the network problem comprises comparing communicationpaths between a server and both the first device and the second deviceto determine an overlap of the communication paths, wherein the sourcedevice being located within the overlap of the communication paths, andwherein the method further comprises: creating, by the manager, amessage that includes information related to the network problem; andtransmitting, by the manager, the message to another monitored room. 8.The method of claim 1, further comprising: transmitting, to the firstdevice via the monitored room, a command to provide advertisinginformation; receiving, from the first device via the monitored room,one or more messages that conform to the messaging protocol and areresponsive to the command; and analyzing the one or more messages todetermine one or more of the following: advertisement insertion data,advertisement viewing data, or advertisement viewing duration data. 9.The method of claim 1, further comprising: transmitting, to the firstdevice via the monitored room, a command to provide viewing information;receiving, from the first device via the monitored room, one or moremessages that conform to the messaging protocol and are responsive tothe command; and analyzing the one or more messages to determine one ormore of current viewing count data or service dwell time data.
 10. Themethod of claim 1, further comprising: transmitting, to the first devicevia the monitored room, a mode change request that causes the firstdevice to switch between a one-way mode of operation and a two-way modeof operation, wherein the one-way mode of operation disables processingof commands received by the first device from the manager via themonitored room and the two-way mode of operation enables processing ofcommands received by the first device from the manager via the monitoredroom.
 11. The method of claim 1, further comprising: transmitting, tothe first device from the manager via the monitored room, a command thatcauses the first device to decode a particular video-on-demand serviceand begin playback of the particular video-on-demand service.
 12. Themethod of claim 1, further comprising: transmitting, to the first devicefrom the manager via the monitored room, a command that causes the firstdevice to stop playback.
 13. The method of claim 1, further comprising:transmitting, to the first device from the manager via the monitoredroom, a command that causes the first device to perform a fast-forward.14. The method of claim 1, further comprising: transmitting, to thefirst device from the manager via the monitored room, a command thatcauses the first device to perform a rewind.
 15. The method of claim 1,further comprising: transmitting, to the first device from the managervia the monitored room, a command that causes the first device to returnto live content.
 16. A method, comprising: monitoring, by a firstmanager executing on a computing device, a first monitored room that isconfigured to transmit, using messaging that conforms to a messagingprotocol, information among the first manager, a second manager and athird manager, wherein the second manager is monitoring a secondmonitored room for telemetry information from first devices of anetwork, and wherein the third manager is monitoring a third monitoredroom for telemetry information from second devices of the network;analyzing, by the second manager, a set of telemetry informationreceived from the first devices via the second monitored room todetermine that at least one of the first devices is experiencing anetwork problem; analyzing, by the third manager, a set of telemetryinformation received from the second devices via the third monitoredroom to determine that at least one of the second devices isexperiencing the network problem; receiving, by the first manager fromthe second manager via the first monitored room, a first message thatconforms to the messaging protocol and comprises an indication that theat least one of the first devices is experiencing the network problem;receiving, by the first manager from the third manager via the firstmonitored room, a second message that conforms to the messaging protocoland comprises an indication that the at least one of the second devicesis experiencing the network problem; and determining, based on the firstmessage and the second message, a location in the network that iscausing the network problem.
 17. The method of claim 16, wherein thenetwork problem comprises a low bitrate.
 18. The method of claim 16,wherein the network problem comprises a variation in fragment qualitylevel.
 19. The method of claim 16, wherein the first message comprisesan indication of a second manager-determined location that is causingthe network problem, wherein the second message comprises an indicationof a third manager-determined location that is causing the networkproblem, and wherein the location in the network is different from boththe second manager-determined location and the third manager-determinedlocation.
 20. The method of claim 16, wherein the messaging protocol isone of the following: an instant messaging protocol, a chat messagingprotocol, a real-time text-based messaging protocol, or ExtensibleMessaging and Presence Protocol (XMPP).